// #include <bits/stdc++.h>
// using namespace std;
// //double实际可以存储的数据范围比long long大，但是没有long long表示的精确
// double x1=1,x3=1;
// void getC(int n,int m)
// {
//     //n到n-m的阶乘
//     for(int i=n;i>n-m;--i)x1*=i;
    
//     //m的阶乘
//     for(int i=m;i>=1;i--)x3*=i;
// }
// //计算C(n,m)即可
// int main()
// {
//     int n,m;
//     scanf("%d %d",&n,&m);
//     if(m>n)printf("0.0000\n");
//     else if(n==m)printf("%.4lf\n",pow(0.8,n));
//     else
//     {
//         getC(n,m);
//         double x = (1.0 * x1 / x3) * pow(0.8,m) * pow(0.2,n - m); 
//         printf("%.4lf\n",x);
//     }
//     return 0;
// }

//解法一：排序加双指针 N*logN +N*logN
// #include <bits/stdc++.h>
// using namespace std;
// using ll=long long;
// int n;
// ll l,r;
// int main()
// {
//     cin>>n>>l>>r;
//     vector<ll> ret(n,0);
//     for(int i=0;i<n;i++)cin>>ret[i];
//     sort(ret.begin(),ret.end());
//     ll count=0;
//     for(int i=0;i<n;i++)
//     {
//         ll temp=ret[i];
//         ll x=lower_bound(ret.begin()+i,ret.end(),l+temp)-ret.begin();
//         ll y=upper_bound(ret.begin()+i,ret.end(),r+temp)-ret.begin();
//         count+=y-x;
//     }
//     cout<<count<<endl;
//     return 0;
// }

//解法二 ：排序加双指针
#include <bits/stdc++.h>
using namespace std;
using ll=long long;
int n;
ll l,r;
ll find(ll x,vector<ll>& ret)
{
    ll res=0,left=0,right=0;
    while(right<n)
    {
        while(ret[right]-ret[left]>x)left++;
        //执行到这里[left,right]一定是一个所有值都小于等于x的区间
        res+=right-left;
        right++;
    }
    return res;
}
int main()
{
    cin>>n>>l>>r;
    vector<ll> ret(n,0);
    for(int i=0;i<n;i++)cin>>ret[i];
    sort(ret.begin(),ret.end());
    cout<<find(r,ret)-find(l-1,ret)<<endl;
    return 0;
}
// #include <bits/stdc++.h>
// using namespace std;
// //找规律，简单枚举n的几种情况，然后分别计算此种情况下A->B和A->C的移动次数
// //后面的情况直接计算即可
// using ll=long long;
// ll mod = 1e9+7;
// int main()
// {
//     ll x = 1, y = 2;
//     int n;
//     cin >> n;
//     int count = n - 1;
//     while(count)
//     {
//         ll temp1 = x, temp2 = y;
//         x = ((temp2 * 2) % mod + 1) % mod;
//         y = ((temp2 * 2) % mod + temp1 % mod + 2) % mod;
//         count -= 1;
//     }
//     cout << x <<" "<< y <<endl;
//     return 0;
// }